package br.com.tiespec.model.Modelo;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="ti_artefato")
public class Artefato extends EntidadeGenerica {

	private static final long serialVersionUID = 4082097428787865745L;
	
	@Column(length=128, nullable=false)
	private String nome;
	
	@Column(length=4000, nullable=true)
	private String descricao;
	
	@Column(name="data_hora_criacao")
	private Date dataHoraCriacao;
	
	@ManyToOne(fetch=FetchType.LAZY, optional=false)
	private Projeto projeto;

	@OneToMany(fetch=FetchType.LAZY, mappedBy="artefato")
	private List<Anexo> anexos;
	
	@OneToMany(fetch=FetchType.LAZY, mappedBy="artefato")
	private List<Documento> documentos;
	
	@ManyToOne(fetch=FetchType.LAZY, optional=false)
	private Usuario responsavel;
	
	@Override
	public String toJson() {
		return null;
	}

	public Projeto getProjeto() {
		return projeto;
	}

	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}

	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public Date getDataHoraCriacao() {
		return dataHoraCriacao;
	}
	
	public void setDataHoraCriacao(Date dataHoraCriacao) {
		this.dataHoraCriacao = dataHoraCriacao;
	}
	
	public List<Anexo> getAnexos() {
		return anexos;
	}

	public void setAnexos(List<Anexo> anexos) {
		this.anexos = anexos;
	}
	
	public List<Documento> getDocumentos() {
		return documentos;
	}
	
	public void setDocumentos(List<Documento> documentos) {
		this.documentos = documentos;
	}
	
	public Usuario getResponsavel() {
		return responsavel;
	}
	
	public void setResponsavel(Usuario responsavel) {
		this.responsavel = responsavel;
	}
}